#ifndef __LCD_H__
#define __LCD_H__

#if defined(__cplusplus)
extern "C" {     /* Make sure we have C-declarations in C++ programs */
#endif

typedef enum __LCD_PIXEL_STATE
{
    PIXEL_OFF = 0,
    PIXEL_ON = 1,
}LCD_PIXEL_STATE;

/********************************************************
*
*     Data structures
*
*********************************************************
*/
typedef struct { WORD x,y; } GUI_POINT;
typedef struct { WORD x0,y0,x1,y1; } GUI_RECT;

typedef void tLCDDEV_DrawBitmap   (int x0, int y0, int xsize, int ysize,
                                                                            int BytesPerLine, const BYTE* pData, 
                                                                            int Diff, const BYTE* pTrans); 
/* Really LCD_PIXELINDEX, but is void to avoid compiler warnings*/

typedef int         tLCDDEV_DrawRect     (int x1,  int y1, int x2, int y2);
typedef int         tLCDDEV_DrawHLine    (int x1, int x2, int y);
typedef int         tLCDDEV_DrawVLine    (int y1, int y2, int x);
typedef int         tLCDDEV_FillRect     (int x1,  int y1, int x2, int y2, LCD_PIXEL_STATE pixel);
typedef int         tLCDDEV_XorPixel     (int x, int y);

typedef struct tLCDDEV_API_struct {
  tLCDDEV_DrawBitmap*         pfDrawBitmap;
  tLCDDEV_DrawRect*             pfDrawRect;
  tLCDDEV_DrawHLine*          pfDrawHLine;
  tLCDDEV_DrawVLine*          pfDrawVLine;
  tLCDDEV_FillRect*           pfFillRect;
  tLCDDEV_XorPixel*           pfXorPixel;
}tLCDDEV_API;

#if defined(__cplusplus)
  }
#endif


#endif
